package be.ipl.diapero.uccImpl;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.diapero.dao.JoueurDao;
import be.ipl.diapero.domaine.Joueur;
import be.ipl.diapero.exceptions.ArgumentInvalideException;
import be.ipl.diapero.exceptions.JoueurExistantException;
import be.ipl.diapero.exceptions.JoueurInexistantException;
import be.ipl.diapero.exceptions.MdpInvalideException;
import be.ipl.diapero.ucc.GestionJoueur;
import be.ipl.diapero.util.Util;

@Stateless
public class GestionJoueurImpl implements GestionJoueur {

	@EJB
	JoueurDao joueurDao;
	
	@Override
	public Joueur creerJoueur(String pseudo, String mdp) throws ArgumentInvalideException, JoueurExistantException {
		Util.checkString(pseudo);
        Util.checkString(mdp);
        
		if(joueurDao.rechercher(pseudo) != null) throw new JoueurExistantException();
		Joueur joueur = new Joueur(pseudo, mdp);	
		return this.joueurDao.enregistrer(joueur);
	}
	
	@Override
	public Joueur connexion(String pseudo, String mdp) throws ArgumentInvalideException, JoueurInexistantException, MdpInvalideException {
		Util.checkString(pseudo);
        Util.checkString(mdp);

		Joueur joueur = joueurDao.rechercher(pseudo);
		
		if(joueur == null) throw new JoueurInexistantException();
		
		if(!joueur.getMdp().equals(mdp)) throw new MdpInvalideException();
		
		return joueur;
	}
	
	@Override
	public Joueur rechercherJoueur(int id){
		return joueurDao.rechercher(id);
	}
	

}
